dc0722265bb7f6438807bafa8c9edbb96ab50559,ambari-server/src/test/java/org/apache/ambari/server/controller/logging/LoggingSearchPropertyProviderTest.java,LoggingSearchPropertyProviderTest,testBasicCallWithNullTailLogURIReturned,#,238
Before Change
expect(controllerMock.getAmbariMetaInfo()).andReturn(metaInfoMock).atLeastOnce();
expect(controllerMock.getClusters()).andReturn(clustersMock).atLeastOnce();
expect(clustersMock.getCluster("clusterone")).andReturn(clusterMock).atLeastOnce();
expect(stackIdMock.getStackName()).andReturn(expectedStackName).atLeastOnce();
expect(stackIdMock.getStackVersion()).andReturn(expectedStackVersion).atLeastOnce();
expect(clusterMock.getCurrentStackVersion()).andReturn(stackIdMock).atLeastOnce();
expect(loggingRequestHelperFactoryMock.getHelper(anyObject(AmbariManagementController.class), anyObject(String.class)))
.andReturn(loggingRequestHelperMock).atLeastOnce();
expect(metaInfoMock.getComponentToService(expectedStackName, expectedStackVersion, expectedComponentName)).andReturn(expectedServiceName).atLeastOnce();
expect(metaInfoMock.getComponent(expectedStackName, expectedStackVersion, expectedServiceName, expectedComponentName)).andReturn(componentInfoMock).atLeastOnce();
expect(componentInfoMock.getLogs()).andReturn(Collections.singletonList(logDefinitionMock)).atLeastOnce();
expect(logDefinitionMock.getLogId()).andReturn(expectedLogSearchComponentName).atLeastOnce();
mockSupport.replayAll();
LoggingSearchPropertyProvider propertyProvider =
new LoggingSearchPropertyProvider();
propertyProvider.setAmbariManagementController(controllerMock);
propertyProvider.setLogSearchDataRetrievalService(dataRetrievalServiceMock);
propertyProvider.setLoggingRequestHelperFactory(loggingRequestHelperFactoryMock);
Set<Resource> returnedResources =
propertyProvider.populateResources(Collections.singleton(resourceMock), requestMock, predicateMock);
// verify that the property provider attached
// the expected logging structure to the associated resource
assertEquals("Returned resource set was of an incorrect size",
1, returnedResources.size());
HostComponentLoggingInfo returnedLogInfo =
captureLogInfo.getValue();
assertNotNull("Returned log info should not be null",
returnedLogInfo);
assertEquals("Returned component was not the correct name",
"hdfs_namenode", returnedLogInfo.getComponentName());
assertEquals("Returned list of log file names for this component was incorrect",
0, returnedLogInfo.getListOfLogFileDefinitions().size());
// verify that the log level count information
// was not added to the HostComponent resource
assertNull(returnedLogInfo.getListOfLogLevels());
mockSupport.verifyAll();
}
After Change
LoggingRequestHelperFactory loggingRequestHelperFactoryMock =
mockSupport.createMock(LoggingRequestHelperFactory.class);
if(authorizedForLogSearch) {
AmbariMetaInfo metaInfoMock =
mockSupport.createMock(AmbariMetaInfo.class);
StackId stackIdMock =
mockSupport.createMock(StackId.class);
ComponentInfo componentInfoMock =
mockSupport.createMock(ComponentInfo.class);
LoggingRequestHelper loggingRequestHelperMock =
mockSupport.createMock(LoggingRequestHelper.class);
expect(dataRetrievalServiceMock.getLogFileNames(expectedLogSearchComponentName, "c6401.ambari.apache.org", "clusterone")).andReturn(Collections.singleton(expectedLogFilePath)).atLeastOnce();
// return null, to simulate the case when the LogSearch service goes down, and the helper object
// is not available to continue servicing the request.
expect(dataRetrievalServiceMock.getLogFileTailURI(expectedAmbariURL + expectedSearchEnginePath, expectedLogSearchComponentName, "c6401.ambari.apache.org", "clusterone")).andReturn(null).atLeastOnce();
expect(loggingRequestHelperFactoryMock.getHelper(anyObject(AmbariManagementController.class), anyObject(String.class)))
.andReturn(loggingRequestHelperMock).atLeastOnce();
expect(controllerMock.getAmbariServerURI(expectedSearchEnginePath)).
andReturn(expectedAmbariURL + expectedSearchEnginePath).atLeastOnce();
expect(controllerMock.getAmbariMetaInfo()).andReturn(metaInfoMock).atLeastOnce();
expect(metaInfoMock.getComponentToService(expectedStackName, expectedStackVersion, expectedComponentName)).andReturn(expectedServiceName).atLeastOnce();
expect(metaInfoMock.getComponent(expectedStackName, expectedStackVersion, expectedServiceName, expectedComponentName)).andReturn(componentInfoMock).atLeastOnce();
expect(componentInfoMock.getLogs()).andReturn(Collections.singletonList(logDefinitionMock)).atLeastOnce();
expect(logDefinitionMock.getLogId()).andReturn(expectedLogSearchComponentName).atLeastOnce();
expect(stackIdMock.getStackName()).andReturn(expectedStackName).atLeastOnce();
expect(stackIdMock.getStackVersion()).andReturn(expectedStackVersion).atLeastOnce();
expect(clusterMock.getCurrentStackVersion()).andReturn(stackIdMock).atLeastOnce();
}
expect(controllerMock.getClusters()).andReturn(clustersMock).atLeastOnce();
expect(clustersMock.getCluster("clusterone")).andReturn(clusterMock).atLeastOnce();
expect(clusterMock.getResourceId()).andReturn(4L).atLeastOnce();
mockSupport.replayAll();
AuthorizationHelperInitializer.viewInstanceDAOReturningNull();
SecurityContextHolder.getContext().setAuthentication(authentication);
LoggingSearchPropertyProvider propertyProvider =
new LoggingSearchPropertyProvider();
propertyProvider.setAmbariManagementController(controllerMock);
propertyProvider.setLogSearchDataRetrievalService(dataRetrievalServiceMock);
propertyProvider.setLoggingRequestHelperFactory(loggingRequestHelperFactoryMock);
Set<Resource> returnedResources =
propertyProvider.populateResources(Collections.singleton(resourceMock), requestMock, predicateMock);
// verify that the property provider attached
// the expected logging structure to the associated resource
assertEquals("Returned resource set was of an incorrect size",
1, returnedResources.size());
if(authorizedForLogSearch) {
HostComponentLoggingInfo returnedLogInfo =
captureLogInfo.getValue();
assertNotNull("Returned log info should not be null",
returnedLogInfo);
assertEquals("Returned component was not the correct name",
"hdfs_namenode", returnedLogInfo.getComponentName());
assertEquals("Returned list of log file names for this component was incorrect",
0, returnedLogInfo.getListOfLogFileDefinitions().size());
// verify that the log level count information
// was not added to the HostComponent resource
assertNull(returnedLogInfo.getListOfLogLevels());
}
else {
assertFalse("Unauthorized user should not be able to retrieve log info", captureLogInfo.hasCaptured());